0%

Dozer BeanMapper 对象转换

dozer是什么?

在开发过程中,常常会涉及到对象之间的转换,bean到dto到vo等等,dozer便是很好的一个对象转换的组件。它可以将一个对象递归拷贝到另外一个对象。既支持简单的对象映射,也支持复杂的对象映射。

对象映射

dozer支持两种映射方式,调用api的简单映射方式和使用xml的映射方式。api调用的方式约束我们定义的两个bean中的成员变量名要一样,方便自动映射,至于类型可以不一样,比如类A的成员变量 ++Integer num++ 和类B的 ++String num++ 是可以直接映射的。xml的方式是通过编写xml文件来定义映射规则。

dozer使用

使用dozer时,只需要加上dozer的依赖即可,下面以maven为例(版本号可以根据最新的做修改):

1
2
3
4
5
<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-core</artifactId>
<version>6.2.0</version>
</dependency>

如下是以简单映射方式封装的uitl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class BeanMapperUtils {

private static Mapper MAPPER = DozerBeanMapperBuilder.buildDefault();

public static <T> T map(Object source, Class<T> destinationClass) {
if (source == null) {
return null;
}
return MAPPER.map(source, destinationClass);
}

public static void map(Object source, Object destination) {
MAPPER.map(source, destination);
}

public static <T> List<T> mapList(Collection sourceList, Class<T> destinationClass) {
List<T> destinationList = new ArrayList<>();
for (Object sourceObject : sourceList) {
destinationList.add(MAPPER.map(sourceObject, destinationClass));
}
return destinationList;
}
}

关于dozer的详细介绍,以及通过编写xml的使用方式,详见官方文档